export const Noop: Sync
    { return () };

export function return:[T]
    &(T) => Sync[T]
    native '__Return';

export function yield:[T]
    &(List[T]) => Observable[T]
    native '__Yield';

export function const:[T]
    &(T) => Computed[T]
    native '__Const';

/// go(f) returns an action that evaluates f() in a separate goroutine.
export function go:[T]
    &(&() => T) => Async[T]
    native '__Go';

export function crash:
    &(String) => Sync[never]
    native '__Crash';
export function crash:
    &(Error) => Sync[never]
    native '__Crash';

export const Random01:
    Sync[NormalFloat]
    native '__Random01';

export const PUID:
    Sync[Number]
    native '__PUID';

export const UUID:
    Sync[String]
    native '__UUID';

export function wait:
    & { timeout: Number } => Async
    native '__Wait';

export function tick:
    & { interval: Number } => Source[unit]
    native '__Tick';


